package ihm;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

/**
 * @author LE DOAN GIANG NGOC
 *
 */
public abstract class PanelGrille extends JPanel implements MouseListener {
	protected int largeur = 11;
	protected boolean estPerso;
	private Color coulDefaut;
	
	// pour empêcher les sorties de tableau sur la dernière ligne on crée une 12ème ligne
	// on y implémente des composants cachés et désactivés
	public PanelGrille(boolean estPerso) {
		this.estPerso = estPerso;
		coulDefaut = getBackground();

		setLayout(new GridLayout(12, largeur));
		
		LineBorder border = new LineBorder(Color.BLACK);

		for (int cpt = 0; cpt < 12 * largeur; cpt++) {
			String strTemp = "";
			JPanel pTemp = new JPanel();

			if (cpt > 0 & cpt < 121) {
				if (cpt < 11) {
					strTemp += cpt;
					pTemp.setEnabled(false);
				} else if (cpt % 11 == 0) {
//					strTemp += (char) ((cpt / 11) + 64);
					strTemp+=(cpt/11);
					pTemp.setEnabled(false);
				} else if (!estPerso) {
					pTemp.addMouseListener(this);
				}
			}else
			{
				pTemp.setEnabled(false) ;
				pTemp.setVisible(false ) ;
			}

			pTemp.add(new JLabel(strTemp));
			pTemp.setBorder(border);
			add(pTemp);
		}
	}

	protected int getCaseX(Point mousePosition) {
		Double mp = (mousePosition.getX()) / (getWidth() / largeur);
		return mp.intValue();
	}
	
	// La valeur de la hauteur est rentrée en dur car la 12 ligne a augmenté la taille de la fenêtre
	// 297 est égal à la hauteur en pixel de de la grille (c'est pas beau !!!! )
	protected char getCaseY(Point mousePosition) {
		Double mp = mousePosition.getY() / (297 / largeur);
		return (char) (mp.intValue() + 64);
	}

	@Override
	public void mouseClicked(MouseEvent mc) {
		
	}

	@Override
	public void mouseEntered(MouseEvent me) {
	}

	@Override
	public void mouseExited(MouseEvent mex) {
	}

	@Override
	public void mousePressed(MouseEvent mp) {

	}

	@Override
	public void mouseReleased(MouseEvent arg0) {

	}
	
	public void effacerGrille() {
		for(int cpt = 0;cpt < 12 * largeur;cpt++)
			getComponent(cpt).setBackground(coulDefaut);
	}
}
